/*****************************************************
	Fichier: SDLFonctions.h
	Définie les fonctions utilisées dans SDLFonctions.c
******************************************************/

#ifndef SDL_FONCTIONS_H
#define SDL_FONCTIONS_H

#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include "Constantes.h"
#include "Formes.h"
#include "Terrain.h"
#include "Jeu.h"

/* Définitions en fonction de l'image de fond utilisée pour la SDL*/

#define TailleBlocX 32
#define TailleBlocY 32

#define PositionTerrainX 19
#define PositionTerrainY 103

#define positionSuivanteX 388
#define positionSuivanteY 168

#define positionScoreX 390
#define positionScoreY 345

#define positionNiveauX 382
#define positionNiveauY 479


/* Fonctions principales*/

/*
	Déplace une pièce j
	Piece * tombe doit être différent de NULL
	le jeu doit être initialisé.
*/
void SDLDeplacerPiece(Jeu * j);


/*
	 Affiche le Jeu j en fonction de l'état (MENU, JEU, PAUSE, PERDU)
	le jeu j doit être initialisé
*/
void SDLAfficherJeu(Jeu * j);


/* FONCTIONS de démarrage et de fermeture  */

/*
	Créations de toutes les variables SDL nécéssaires.
*/
void SDL_INIT(void);


/*
	Libère toutes les variables SDL et ferme la fenêtre
*/
void SDL_STOP(void);


/*SOUS-FONCTIONS */

/*
	Affiche l'image de fond qui est sur le thème de Nyan cat FLY!
*/
void SDLAfficherFond(void);

/*
	 Affiche le terrain t .
	 le jeu doit être initialisé.
*/
void SDLAfficherTerrain(Terrain * t);

/*
	Affiche une piece p sur le terrain t en fonction de sa position et de sa couleur c.
	le jeu doit être initialisé.
*/
void SDLAfficherPiece(Piece * p);

/*
	Affiche un bloc de couleur c à la position (x,y).
	paramètre x position de l'endroit du terrain où l'on veut afficher le bloc.
	paramètre y position de l'endroit du terrain où l'on veut afficher le bloc.
	le jeu doit être initialisé.
*/
void SDLAfficherBloc(int x, int y, Couleur c);

/*
	Mise-à-jour de l'écran
*/
void SDL_REFRESH(void);

/*
	 Affiche la pièce suivante p .
	le jeu doit être initialisé.
*/
void SDLAfficherSuivante(Piece * p);

/*
	Affiche le niveau.
	le jeu doit être initialisé.
*/
void SDL_EcrireNiveau(int niveau);

/*
	Affiche le score .
	le jeu doit être initialisé.
*/
void SDL_EcrireScore(int score);

/*
	Affiche le jeu en état de pause .
	le jeu doit être initialisé.
*/
void SDLPAUSE(Jeu * j);

/*
	Affiche le jeu en état de menu.
	le jeu doit être initialisé.
*/
void SDLMENU(Jeu * j);

/*
	Affiche le jeu .
	 le jeu doit être initialisé.
*/
void SDLJEU(Jeu * j);

/*
	Affiche le jeu en état de défaite.
	le jeu doit être initialisé.
*/
void SDLPERDU(Jeu * j);

/*
	Ralenti un peu l'affichage
*/
void SDLDelais(void);


#endif
